// 栈可以使用数组实现，也可以通过链表实现，在 js 中使用数组来实现是比较简单的，因为 js 中数组是经过特殊处理的，与其他的语言不同
// 建议使用 java 、 c++ 或则其他语言 再写一遍

// 另外先进后出的结构问题都可以使用栈这种数据结构来解决

// 数组栈
class Stack {
    size = 0
    arr = []    

    // 入栈
    push(item) {
        if (!item) {
            return 
        }
        this.arr.push(item)   // js中数组可以直接实现入栈的需求
        this.size++     
        return this.size
     }

    //  出栈
    pop(){
        const item = this.arr.pop()
        this.size--
        return item
    }

    getSize(){
        return this.size
    }

    // 遍历
    print(){
        this.arr.forEach(i => console.log(i))
    }
}

const stack = new Stack()
stack.push(1)
stack.push(2)
stack.print()

console.log("当前栈的长度为:", stack.getSize());

console.log(stack.pop())
console.log("----------");

stack.print()

